Wie können stark verschachtelte Code-Strukturen übersichtlicher gestaltet werden? - Formatierung: Leerzeilen, Kommentare - Funktionen! - *Jede* Funktion sollte auf eine Bildschirmseite passen Wie können wir die Verschachtelung unserer IF-Statements reduzieren? - else if (Benötigt C-Style-Syntax) - elif (Bourne-Shell / Bash) - Logische-Konditionen umstellen - Kombinatoren (&&, ||) nutzen um Konditionen zusammenzufassen Beispiele: 347022 4 Tage, 0:23:42 172031 1 Tag, 23:47:11 5280 1:28:00 323 5:23 42 0:42 1 0:01 Boolsche Algebra ================ a) ! ( ! solarStrom() || ! akku() >= 10 ) ! ( ! false || ! false ) = ! ( true || true) = ! true = false ! ( ! false || ! true ) = ! ( true || false) = ! true = false ! ( ! true || ! false ) = ! ( false || true) = ! true = false ! ( ! true || ! true ) = ! ( false || false)= ! false = true solarStrom() && akku() >= 10 false && false = false false && true = false true && false = false true && true = true b) !vpnEnabled() && !wifiSSID.equals("Heimnetz") && !user.equals("gast") 0 0 0 ! false && ! false && ! false = true && true && true = true 0 0 1 ! false && ! false && ! true = true && true && false = false 0 1 0 ! false && ! true && ! false = true && false && true = false 0 1 1 ! false && ! true && ! true = true && false && false = false 1 0 0 ! true && ! false && ! false = false && true && true = false 1 0 1 ! true && ! false && ! true = false && true && false = false 1 1 0 ! true && ! true && ! false = false && false && true = false 1 1 1 ! true && ! true && ! true = false && false && false = false !( vpnEnabled() || wifiSSID.equals("Heimnetz") || user.equals("gast")) 0 0 0 ! ( false || false || false ) = ! (false) = true 0 0 1 ! ( false || false || true ) = ! (true ) = false 0 1 0 ! ( false || true || false ) = ! (true ) = false 0 1 1 ! ( false || true || true ) = ! (true ) = false 1 0 0 ! ( true || false || false ) = ! (true ) = false 1 0 1 ! ( true || false || true ) = ! (true ) = false 1 1 0 ! ( true || true || false ) = ! (true ) = false 1 1 1 ! ( true || true || true ) = ! (true ) = false ! ( ! vpnEnabled() && ! wifiSSID.equals("Heimnetz") ) || user.equals("gast") ! ! ( ! vpnEnabled() && ! wifiSSID.equals("Heimnetz") ) && ! user.equals("gast") ( ! vpnEnabled() && ! wifiSSID.equals("Heimnetz") && ! user.equals("gast") ) c) akku() < 10 && displayOffen() || (akku() < 10 && ! displayOffen() && bildschirmAngeschlossen() ) akku display bildschirm 0 0 0 false && false || (false && ! false && false ) = false || (false && true && false ) = false || false = false 0 0 1 false && false || (false && ! false && true ) = false || (false && true && true ) = false || false = false 0 1 0 false && true || (false && ! true && false ) = false || (false && false && false ) = false || false = false 0 1 1 false && true || (false && ! true && true ) = false || (false && false && true ) = false || false = false 1 0 0 true && false || (true && ! false && false ) = false || (true && true && false ) = false || false = false 1 0 1 true && false || (true && ! false && true ) = false || (true && true && true ) = false || true = true 1 1 0 true && true || (true && ! true && false ) = true || (true && false && false ) = true || false = true 1 1 1 true && true || (true && ! true && true ) = true || (true && false && true ) = true || false = true akku() < 10 && (displayOffen() || bildschirmAngeschlossen()) 0 0 0 false && (false || false) = false && false = false 0 0 1 false && (false || true ) = false && true = false 0 1 0 false && (true || false) = false && true = false 0 1 1 false && (true || true ) = false && true = false 1 0 0 true && (false || false) = true && false = false 1 0 1 true && (false || true ) = true && true = true 1 1 0 true && (true || false) = true && true = true 1 1 1 true && (true || true ) = true && true = true (akku() < 10 && displayOffen()) || (akku() < 10 && ! displayOffen() && bildschirmAngeschlossen()) -> Distributivgesetz akku() < 10 && ( displayOffen() || !displayOffen() && bildschirmAngeschlossen() ) akku() < 10 && ( displayOffen() || !displayOffen() && bildschirmAngeschlossen() ) c) akku() < 10 && displayOffen() || (akku() < 10 && ! displayOffen() && bildschirmAngeschlossen()) akku() < 10 && (displayOffen() || (!displayOffen() && bildschirmAngeschlossen()) akku() < 10 && ((displayOffen || !displayOffen) && (displayOffen() || bildschirmAngeschlossen()) akku() < 10 && ( True && (displayOffen() || bildschirmAngeschlossen()) akku() < 10 && (displayOffen() || bildschirmAngeschlossen())